package com.imooc.api.controller.user;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @Author : Kyle_Fu
 * @Date: 2023-05-04 22:59
 */
@Api(value = "controller的标题",tags = {"xx功能的controller"})
public interface HelloControllerApi {

    /**
     *  api 的作用
     *  api 就相当于企业的领导,老板,部门经理
     *  其他的服务层都是实现,他们就相当于员工,只做事情
     *  老板(开发人员)来看一下每个人的进度,做什么事
     *  老板不回去问员工,他只会对接部门经理
     *  那么这里所有的api接口,都是统一在此进行管理和调度的,微服务也是如此
     */

    /**
     * 运作:
     * 现在的所有接口都在此暴露,实现都是在各自的微服务中
     * 本项目只写接口,不写实现,实现在各自的微服务工程中,因此以业务来划分的微服务有很多
     * controller也会分散在各个微服务工程中,一旦多了就很难管理和查看
     *
     * 其次,微服务之间的调用都是基于接口的
     * 如果不这么做,微服务之间的调用就需要相互依赖,
     * 耦合度也就提高了,接口的目的为了能够提供接口
     *
     * 此外,本工程的接口其实就是一套规范,实现都是由各自的工程去做的处理
     * 目前我们使用springboot作为接口的实现
     * 如果未来出现新的java web框架,那么我们不需要修改接口
     * 只需要去修改对应的实现即可,这也是解耦的一种体现
     *
     * Swagger2, 基于接口的自动文档生成
     * 所有的配置文件只需要一份,就能在当前项目中去构建,管理方便
     *
     * 综上所述,如此做法,可提高多服务的项目的可扩展性。
     *
     */

    @ApiOperation(value = "hello方法的接口",notes = "hello方法的接口",httpMethod = "GET")
    @GetMapping("/hello")
    public Object hello();
}
